#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/wait.h>
#include <stdint.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdbool.h>
#include <errno.h>
#include <string.h>
#include <signal.h>
#include <dlfcn.h>
#include <pthread.h>
#include <linux/fb.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <syslog.h>
#include <pthread.h>
void *fun1(void *arg)
{
    printf("[1]我是：%zu\n",pthread_self());
    sigset_t sig;
    sigemptyset(&sig);
    sigaddset(&sig,SIGINT);
    sigprocmask(SIG_BLOCK,&sig,NULL);
    for(int i=0;;i++);
}
void *fun2(void *arg)
{
    printf("[2]我是：%zu\n",pthread_self());
    sigset_t sig;
    sigemptyset(&sig);
    sigaddset(&sig,SIGINT);
    sigaddset(&sig,SIGQUIT);
    sigprocmask(SIG_BLOCK,&sig,NULL);
    for(int i=0;;i++);
}
void *fun3(void *arg)
{
    printf("[3]我是：%zu\n",pthread_self());
    sigset_t sig;
    sigemptyset(&sig);
    sigaddset(&sig,SIGQUIT);
    sigprocmask(SIG_BLOCK,&sig,NULL);
    for(int i=0;;i++);
}
void headler(int sig)
{
    if(sig==SIGINT)
    {
        printf("TIP:%zu(SIGINT)\n",pthread_self());
    }
    if(sig==SIGQUIT)
    {
        printf("TIP:%zu(SIGQUIT)\n",pthread_self());
    }
    
}

int main(int argc, char const *argv[])
{
    signal(SIGINT,headler);
    signal(SIGQUIT,headler);
    pthread_t t1[3];
    pthread_create(&t1[0],NULL,fun1,NULL);
    pthread_create(&t1[1],NULL,fun2,NULL);
    pthread_create(&t1[2],NULL,fun3,NULL);
    // sigset_t sig;
    // sigemptyset(&sig);
    // sigaddset(&sig,SIGINT);
    // sigaddset(&sig,SIGQUIT);
    // sigprocmask(SIG_BLOCK,&sig,NULL);
    // for(int i=0;;i++)
    // {
    //     sleep(1);
    // }
    pthread_exit(NULL);
    printf("123123123\n");
    return 0;
}
